{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###Visualizing classes with GoogLeNet\n",
    "\n",
    "This is an ipython notebook to generate visualizations of classes with GoogLeNet, for some more info refer to [this blogpost](http://auduno.com/post/125362849838/visualizing-googlenet-classes), and for some examples of generated images see [this](https://goo.gl/photos/8qcvjnYBQVSGG2eN6) album of highlights or [this](https://goo.gl/photos/FfsZZektqpZkdDnKA) album of all 1000 imagenet classes.\n",
    "\n",
    "To run this code, you'll need an installation of Caffe with built pycaffe libraries, as well as the python libraries numpy, scipy and PIL. For instructions on how to install Caffe and pycaffe, refer to the installation guide [here](http://caffe.berkeleyvision.org/installation.html). Before running the ipython notebooks, you'll also need to download the [bvlc_googlenet model](https://github.com/BVLC/caffe/tree/master/models/bvlc_googlenet), and modify the variables ```pycaffe_root``` to refer to the path of your pycaffe installation (if it's not already in your python path) and ```model_path``` to refer to the path of the googlenet caffe model. Also uncomment the line that enables GPU mode if you have built Caffe with GPU-support and a suitable GPU available.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# imports and basic notebook setup\n",
    "from cStringIO import StringIO\n",
    "import numpy as np\n",
    "import os,re,random\n",
    "import scipy.ndimage as nd\n",
    "import PIL.Image\n",
    "import sys\n",
    "from IPython.display import clear_output, Image, display\n",
    "from scipy.misc import imresize\n",
    "\n",
    "pycaffe_root = \"/your/path/here/caffe/python\" # substitute your path here\n",
    "sys.path.insert(0, pycaffe_root)\n",
    "import caffe\n",
    "\n",
    "model_name = \"GoogLeNet\"\n",
    "model_path = '/your/path/here/caffe_models/bvlc_googlenet/' # substitute your path here\n",
    "net_fn   = './deploy_googlenet_updated.prototxt'\n",
    "param_fn = model_path + 'bvlc_googlenet.caffemodel'\n",
    "mean = np.float32([104.0, 117.0, 123.0])\n",
    "\n",
    "#caffe.set_mode_gpu() # uncomment this if gpu processing is available\n",
    "net = caffe.Classifier(net_fn, param_fn,\n",
    "                       mean = mean, # ImageNet mean, training set dependent\n",
    "                       channel_swap = (2,1,0)) # the reference model has channels in BGR order instead of RGB\n",
    "\n",
    "# a couple of utility functions for converting to and from Caffe's input image layout\n",
    "def preprocess(net, img):\n",
    "    return np.float32(np.rollaxis(img, 2)[::-1]) - net.transformer.mean['data']\n",
    "def deprocess(net, img):\n",
    "    return np.dstack((img + net.transformer.mean['data'])[::-1])\n",
    "\n",
    "def blur(img, sigma):\n",
    "    if sigma > 0:\n",
    "        img[0] = nd.filters.gaussian_filter(img[0], sigma, order=0)\n",
    "        img[1] = nd.filters.gaussian_filter(img[1], sigma, order=0)\n",
    "        img[2] = nd.filters.gaussian_filter(img[2], sigma, order=0)\n",
    "    return img\n",
    "\n",
    "def showarray(a, f, fmt='jpeg'):\n",
    "    a = np.uint8(np.clip(a, 0, 255))\n",
    "    f = StringIO()\n",
    "    PIL.Image.fromarray(a).save(f, fmt)\n",
    "    display(Image(data=f.getvalue()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Definition of the main gradient ascent functions. Note that these are based on the [deepdream code](https://github.com/google/deepdream/blob/master/dream.ipynb) published by Google as well as [this code](https://github.com/kylemcdonald/deepdream/blob/master/dream.ipynb) by Kyle McDonald."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def make_step(net, step_size=1.5, end='inception_4c/output', clip=True, focus=None, sigma=None):\n",
    "    '''Basic gradient ascent step.'''\n",
    "\n",
    "    src = net.blobs['data'] # input image is stored in Net's 'data' blob\n",
    "    \n",
    "    dst = net.blobs[end]\n",
    "    net.forward(end=end)\n",
    "\n",
    "    one_hot = np.zeros_like(dst.data)\n",
    "    one_hot.flat[focus] = 1.\n",
    "    dst.diff[:] = one_hot\n",
    "\n",
    "    net.backward(start=end)\n",
    "    g = src.diff[0]\n",
    "    \n",
    "    src.data[:] += step_size/np.abs(g).mean() * g\n",
    "\n",
    "    if clip:\n",
    "        bias = net.transformer.mean['data']\n",
    "        src.data[:] = np.clip(src.data, -bias, 255-bias) \n",
    "        \n",
    "    src.data[0] = blur(src.data[0], sigma)\n",
    "    \n",
    "    # reset objective for next step\n",
    "    dst.diff.fill(0.)\n",
    "\n",
    "def deepdraw(net, base_img, octaves, random_crop=True, visualize=True, focus=None,\n",
    "    clip=True, **step_params):\n",
    "    \n",
    "    # prepare base image\n",
    "    image = preprocess(net, base_img) # (3,224,224)\n",
    "    \n",
    "    # get input dimensions from net\n",
    "    w = net.blobs['data'].width\n",
    "    h = net.blobs['data'].height\n",
    "    \n",
    "    print \"starting drawing\"\n",
    "    src = net.blobs['data']\n",
    "    src.reshape(1,3,h,w) # resize the network's input image size\n",
    "    for e,o in enumerate(octaves):\n",
    "        if 'scale' in o:\n",
    "            # resize by o['scale'] if it exists\n",
    "            image = nd.zoom(image, (1,o['scale'],o['scale']))\n",
    "        _,imw,imh = image.shape\n",
    "        \n",
    "        # select layer\n",
    "        layer = o['layer']\n",
    "\n",
    "        for i in xrange(o['iter_n']):\n",
    "            if imw > w:\n",
    "                if random_crop:\n",
    "                    # randomly select a crop \n",
    "                    #ox = random.randint(0,imw-224)\n",
    "                    #oy = random.randint(0,imh-224)\n",
    "                    mid_x = (imw-w)/2.\n",
    "                    width_x = imw-w\n",
    "                    ox = np.random.normal(mid_x, width_x*0.3, 1)\n",
    "                    ox = int(np.clip(ox,0,imw-w))\n",
    "                    mid_y = (imh-h)/2.\n",
    "                    width_y = imh-h\n",
    "                    oy = np.random.normal(mid_y, width_y*0.3, 1)\n",
    "                    oy = int(np.clip(oy,0,imh-h))\n",
    "                    # insert the crop into src.data[0]\n",
    "                    src.data[0] = image[:,ox:ox+w,oy:oy+h]\n",
    "                else:\n",
    "                    ox = (imw-w)/2.\n",
    "                    oy = (imh-h)/2.\n",
    "                    src.data[0] = image[:,ox:ox+w,oy:oy+h]\n",
    "            else:\n",
    "                ox = 0\n",
    "                oy = 0\n",
    "                src.data[0] = image.copy()\n",
    "\n",
    "            sigma = o['start_sigma'] + ((o['end_sigma'] - o['start_sigma']) * i) / o['iter_n']\n",
    "            step_size = o['start_step_size'] + ((o['end_step_size'] - o['start_step_size']) * i) / o['iter_n']\n",
    "            \n",
    "            make_step(net, end=layer, clip=clip, focus=focus, \n",
    "                      sigma=sigma, step_size=step_size)\n",
    "\n",
    "            if visualize:\n",
    "                vis = deprocess(net, src.data[0])\n",
    "                if not clip: # adjust image contrast if clipping is disabled\n",
    "                    vis = vis*(255.0/np.percentile(vis, 99.98))\n",
    "                if i % 1 == 0:\n",
    "                    showarray(vis,\"./filename\"+str(i)+\".jpg\")\n",
    "            \n",
    "            if i % 10 == 0:\n",
    "                print 'finished step %d in octave %d' % (i,e)\n",
    "            \n",
    "            # insert modified image back into original image (if necessary)\n",
    "            image[:,ox:ox+w,oy:oy+h] = src.data[0]\n",
    "        \n",
    "        print \"octave %d image:\" % e\n",
    "        showarray(deprocess(net, image),\"./octave_\"+str(e)+\".jpg\")\n",
    "            \n",
    "    # returning the resulting image\n",
    "    return deprocess(net, image)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Generating the class visualizations\n",
    "\n",
    "The ```octaves``` list determines in which order we optimize layers, as well as how many iterations and scaling on each octave. For each octave, parameters are:\n",
    "* ```layer``` : which layer to optimize\n",
    "* ```iter_n``` : how many iterations\n",
    "* ```scale``` : by what factor (if any) to scale up the base image before proceeding\n",
    "* ```start_sigma``` : the initial radius of the gaussian blur\n",
    "* ```end_sigma``` : the final radius of the gaussian blur\n",
    "* ```start_step_size``` : the initial step size of the gradient ascent\n",
    "* ```end_step_size``` : the final step size of the gradient ascent\n",
    "\n",
    "The choice of octave parameters below will give decent images, and is the one used for visualizations in the blogpost. However, the choice of parameters was a bit arbitrary, so feel free to experiment. Note that generating an image will take around 1 minute with GPU-enabled Caffe, or 10-15 minutes if you're running purely on CPU, depending on your computer performance."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "starting drawing\n",
      "finished step 0 in octave 0\n",
      "finished step 10 in octave 0\n",
      "finished step 20 in octave 0\n",
      "finished step 30 in octave 0\n",
      "finished step 40 in octave 0\n",
      "finished step 50 in octave 0\n",
      "finished step 60 in octave 0\n",
      "finished step 70 in octave 0\n",
      "finished step 80 in octave 0\n",
      "finished step 90 in octave 0\n",
      "finished step 100 in octave 0\n",
      "finished step 110 in octave 0\n",
      "finished step 120 in octave 0\n",
      "finished step 130 in octave 0\n",
      "finished step 140 in octave 0\n",
      "finished step 150 in octave 0\n",
      "finished step 160 in octave 0\n",
      "finished step 170 in octave 0\n",
      "finished step 180 in octave 0\n",
      "octave 0 image:\n"
     ]
    },
    {
     "data": {
      "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCADgAOADASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD0J0yn\nzVTlHluoHU1oyBRGSc5HQVnElpf72Oh9KyUbGz9407Rd67DkGrrgIqrIOvRqqQspddmT8vzGrDTf\naIghHy9jWTou5gk4STRUuiAOMA1TjYFj/KprhWX5eeB3rMhLiX0OeKqlzRvGRtXaa5kbSuqrn0FX\nIjvjxna3UA1QiAIG7LMO1WDKGJdzjBwB60udN2PPctSDUIN6cDt1rDUCK42SYCtwG9DXTBvOiztG\n3pisq8t/NRlUKD9OatOSldbHbSqqUeSRPYyNsBI4Bxmr0jhYuh57ViWM4wAwJKnBzWhcTMF4OART\nqx5paGE4NzuircbeWPy06KI7N7GoViMs4ZhuC9FNTuXdsZ2+gppKTsdMV7ON+pHIyhsDlvSpY/lX\n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\ntnTtSgkG18Bu9cVSl7t0d1KrytSR/9k=\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "finished step 0 in octave 1\n",
      "finished step 10 in octave 1\n",
      "finished step 20 in octave 1\n",
      "finished step 30 in octave 1\n",
      "finished step 40 in octave 1\n",
      "finished step 50 in octave 1\n",
      "finished step 60 in octave 1\n",
      "finished step 70 in octave 1\n",
      "finished step 80 in octave 1\n",
      "finished step 90 in octave 1\n",
      "finished step 100 in octave 1\n",
      "finished step 110 in octave 1\n",
      "finished step 120 in octave 1\n",
      "finished step 130 in octave 1\n",
      "finished step 140 in octave 1\n",
      "octave 1 image:\n"
     ]
    },
    {
     "data": {
      "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAENAQ0DASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD0IruH\nNVZU2mr7D5apStk4NYpWN27klv1rUhXgVmQDFaULECs5U+xzyi1qh8nFUJ2Az61blbJrPuASahRc\nWdUJXhZkQfJzVyLoKzRkN7VctmyQK6ObQ46uhoIOakdQVpgYAZ9KheUuSM1mncwUrMpXMW/PtVAR\n7Wz6VruOTVR4wAaqLalc7Pa3jYdauAwFaqMAM1jxgq2RV1Jdqn196dX3tjmn770GXTfOaqAfMD1F\nSyks4PXB5pwjDZPShaKzNYrUbkZxTSMmmgFfvGpok3HNWopLQqpO4IMCmuwHGKnZcdqiCBialoyg\n9St5e7LA9OtPAxz2qUxgZI49aMZxRA3kxqAk4FWvLKjnqajhj/e5yatbMknNW9jGTKkq8YNVynzV\n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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "finished step 0 in octave 2\n",
      "finished step 10 in octave 2\n",
      "finished step 20 in octave 2\n",
      "finished step 30 in octave 2\n",
      "finished step 40 in octave 2\n",
      "finished step 50 in octave 2\n",
      "finished step 60 in octave 2\n",
      "finished step 70 in octave 2\n",
      "finished step 80 in octave 2\n",
      "finished step 90 in octave 2\n",
      "finished step 100 in octave 2\n",
      "finished step 110 in octave 2\n",
      "finished step 120 in octave 2\n",
      "finished step 130 in octave 2\n",
      "finished step 140 in octave 2\n",
      "octave 2 image:\n"
     ]
    },
    {
     "data": {
      "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAFDAUMDASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD0Irkc\n1XljxV3HFV5ehrBKx0N3K8fWtC3Ge1Z6AluKvwlsDjPqaU4X1OeUOpeUYGKH2gUqMGU+1QysOxJ9\nTWHKyqMmmV5SMHNU2fL4qxcHA9DVF8gcZ+prak7bm1TVXLkJVj96rajHHU9sd6zLY4AAzkdSBmtO\nHccHCnP8Wea0nKxwTdixEmRk0TAeWT2HU0BgOpO4VFcTBotuaiLvqRGWpRlQPEG4yeoFZ7gKckYF\naoQgBgPmP6iq8sWXGe9JaSudyqKUbEEXXA61o27ZUHHBFZq5RiCDkGrkL9CDgHnFb1GnE5pu6saX\nG2s64OHI61cZ9seTWczbm6n8KwpxdyYKyIsHPFWAyjAHTuabs45zTCgCjOQe1aNKR0QfKh5Hbg0z\nac8UqqQ3PHtVlUOOMD61XLZGc5XIhjYDzTJSMDk/jUxxkjb1phUv8oxn+VQxQepV2ANye3FSJG20\nnHWlKMsm3gj6VK7FcY4x6URVjaUrkIPr+VTxIx5I496i8styfvE1dhjKj5SCv8q1Rm2RkELnvUcu\nBjNXTGduccVDOm5c9MVlUjcykrme4w2KVAN2DUgQkdAOaYUPrWWzsaU5crL0DKBVveAvSqEHyjkn\njtUjyEjrge1OCdzqqTUkRXBBPWqbMsZyetSztznOT9aqNljkD8K6bJIyirvUlWQls4qwjbhxVaJT\nnmrscfIxWHJrdnRUnG1kAjJOKsJBgU+JBnpVtFBPTgVa8jknNJFcRHFFW8LRVWOH2rMw9Koz7mbG\nTitALk1FJCMcU7HpplWJChwKuJyAQAffOKqngZyce1WEPQZz70WAtg/Lxx61G5y3Ye2KdHyOT+VD\njHv6GlFJg1ylSVB36mqMiEE8HPatGUHPAzVSdD83rQoaictLEETc5Py49604iVX2PcVlDhxitOIb\nU/DmolE5ZrUkMoU9ev61GmXIyPpUDyHecfd9KtQfKu88HFKMbGb0JGHYdVFViA7Fj/D3qw6sGU8Y\nfjHpUN2gUGMHHfNJ6Mu7TK1xGBN8p68ihTkjPDd8Usu4xROBkrimvgFjjnPSlzDm9S1M37n1qso7\nk9elPmlwkQAI9aRByvbnAq4vQa7MmCFAOMj65xUczhF6c1K/y/K33SOfWqDiQsQzbsGlDXVl3WxJ\nC3mPzzj3q+gODnt0FZ1vlHxyeeKvAr3PNbt6GcnqMf8AIjse9NjYM2N3NMlk8x+AcgVFbjyn3Nz9\nKz3KgrK5fZQFPHIqkSdxOeh5zUzPuUfrTI/mIzgj0zQlYdx24KM/y4qxbt8uNoGB06/rVWYhVx0F\nLbzqRhG+uaqLuD2uaRfKYxVaTLKcdaXf78U3fxnAGaGTa5Fs7Y6UuF5DDj1oeVVUkjmqktyzfu0B\n57UlTvqyoJsnaVRwD+NRNMCcbj7e9U5SyHGDnvz0qFSS43ZJHTBq3GKWhsoSVmy+/wA+DgH3NCIH\nPoPaooO/Bx9auRphgVOMVhfU00QqKAMqMj3qzGMgcYNQAZ2lhkE/SrDMqcDk0pHNUkWYgqqc9KlQ\n9u3WqHmbVJPbtT1lYjc2AD60o3Rg02aG4UVS833ope8RyEYYd6JHwKqNIQOKjE5dsEniu5xTR2J2\nZM3TJxTUKjA7ntUUsxVdw59qiWbJyOD3qUi9WjUhk45qzt3RZHNZscoK4Bq7DLlNoIFLks7omTbQ\nwjnnA+tVJkOegP8ASrUp2Hg8/wA6rSEtyDxnnFa8plzEEcIaXHbtWgybUxkDI4FQW6gMxwT6U64k\nR8gdetczi3OwTasmUWLF+DyTitLeAF44xVGFCXzubG77uRt6VOZF3YJAA6inJa2M5WehIkqtGRn5\nt2OtLNInDyOFJGOapyXjIjSCLZGDgHbk/Ws67cPt81ncMec9vwpOKm9DdU3pzFiXUoMssZDMBzk4\nzUMd/FKdrkKxPXtWNO4Ybkwy4G0kgdTjH+famtA4RVf5lYFlw38/xrVU6ezRcaLa5kdQCwALclRg\n1bs1RpWL/eUdhXO6Zeys5juX+791gPvVtxiQR5IYEnc3PrXNVg4PlZjOLW5LKS7MTyc8VF5THnP5\nVZtQrjkjGOeaGjwTjgClz290ys7XKrfuzgDoMVIsm0cGmXA4QdySTTYwWB9TwK1T0LWqJ4E8xmkI\nxzwKbcxbNxAwD6VMmAevAp0oVoGxyayvaV2NzWyKKybuFHHarMKcegNUhw2B+VaMAxEdwp1J2Ict\nSG5RSu0jknA+lUY1eNtik4zV+c5KccE0xoBkseM9BUxnY6U0/dBJBt56e1SAnbyep61GECEAE8Uy\naQIoAPJPet01PYjkd7Ec8jbsDqKjG5BvQEntiqlyzOwUnANXIfurtByBgir8jWKt1HBTIDJKNrt2\n9agMXzPjv3q0QM4xzinbAWxnFYRg0zodRONhIFBAyOauKFAyeT/KoxhBkEZHfFRSTHaFXkE8nua0\nULas55zvoiVmyvJ4WojKQC+cCo5JVEY4781XeQ4GeR2pWMbXLHngA7iPXFOjuRnOQayZrgh9qpk9\nzTIZnzRyNFwjHU3ftAorKErY60UcjFZGm8RPeovLYNV8LTNo9M01Nm7popMp644potcg84zzV0p2\n70EAZI54x9apvQnYppG8eeeO1PjuCjE4+tWmQAge9VpYDlsEcdqqEujIbSJZZw6/1psbO2cngDge\ntVGBAIGQTzzVm3YlWJPA/nTV0yJWcdCaMmMH5uxqsoLMc5zU7YU5GMsMZ9qjkuoraP5ivmNwqmlL\nQycXJ2Q4MQxVAMtwB6UpIQbcjd/tVALmP75kCKRnnrmlFzFyVQYPOT1xWDUpPQ6IwUfUsNAJBkn5\nlHVTxWbqFs0q53OsWdxzwDzV+O45KqAsZPJ6kmoNQKSIvDM2D8of+lbp8psveMCeEvABGqoMZUD0\nqpax3DYFw2XVWXg4Byc/0q20Uwl8+YgADaqg/wA6ijd2nBCg72ABB4A9zSur3RrzTprli7XLlpaX\njsGhtcleNxfaoHrwOa20a6hjWO78iRiM7kYgg+mKmtIzb2DIzlS391utNlQsSC5LjBIPcVFWSkkm\nccm76iCfaMKDViBi6E5J+oqosTrL8w3JxtIrQ4EOQO3QVzza0SM1pdspTYB/DIFWLaLbCXIyx6e1\nVJc7sjmtC1mVYtrVM5tK6M12ICAuCRxTldScHoakmAeIYPA5xVI5Hfn1FS5cyuOUXFkc8ZjueDwa\nvxsPIbPYVXlCyMnTpk80kM6GMxjvxms5ScrBOHvhKwZOP4Wz+lSwMGBLVVDfI655xmmRSHPfiuiK\nujWnbnXMaJxtJAx1/Gs+c5erctwAiJjkc4qrtLvjFVF8qNvinfYq+QXy3cU2WTyRnkdOlaDDC46V\nUliDnJ69BirjLW7HK17Ijju2kOPSrkUhb5vWq8dttGSKtDCDIHTgCtIvmYpuyHSvt44ziqwbLKM9\nBzTJpcMRnNSW8e4Z6k9a1aMbjTE7Ejt2zT/swC4q8sAI/CntFgDJpaEN9DEktNx/SljtkUYKN+Fa\nphUnAGT60NEBzWymmLYz/KAPC8UVc8setFLQLl0jj+dNbj6UBu5pnmDBYEegzXMonY5XF4XBbj1p\nMYYKWB4yBTA2/dkBj79qC4GMcnGABTsRLQftLMOM1G4Cscck8Ux5pIwRvVehPFOWVXGMjeO1OKMr\nSavYrsgJJP3V5wO5pInLEYG1RyBilbcOM4H0ogBzhiBnnGKp7is7FhY0YfM2zuMc1DLFAFwbdhjq\n/XNWHUq+4DAxjFMhyWYZO3pj1qPacsrkuV9HoUHs4N3IAJHB61XmidOVYOR+taEsYA2uuRng5xVS\nZWVTs4/2TXUmpK4lJp2YlrKWwWeUMDyoG3j0rS2jyRJuyQegHXjmsy0jmOd5wOOvNbMCqgBDAg8n\nnGRXPUg2rI66VRJpsqz24EZYoTnAAHaqEWlfOyvEyAn5h6+9dKojYhhGm4DH3sgimyIEXdjJJ3E1\nyRpSg9zprYmMkrozJiFaOIgYRcUqEDAC4Hr1zUBJkkd3p+4gDpTnvY8ypO8hzySRepBzlauRbTbZ\nzjPvVbyjMMk8KM4pwJ2MoHyDvWUrNaA9rsa6EqzZHBxjvTYG5waZJJuiKnnByDVeW6wSkQ3P3I6C\nnCEp6I0lBaGm0qeUFZ9ucH61SuL2PLeXE0h7bRxUdvGSwZ3BI5wT1qWeFmTlXTnjA4Arrp4SLfvE\nTmkZNzqsqqQGERHPIBrPbXJZGyJlb0+XIFV9XkjUSJG/zdMAHOPrWfDHbwoGuGKA8hwDxk8V1OnC\nC2NKUZ1ZW6s3rfWjvHmLhTkMQeBWtDOrqjKQd3T3rh2cyStHC/IJRiGyGI571saTfzW6+TcL8g6N\n6VlWoc0brc0nDkdmzo3kL3B781qrHFDACW+cjn2rHhKuvmIwPNWJnLIBnmvLmpX5XoCWlx8swOdt\nLHGNoZ/rVdBg7m+6KlSffnsorda7GlNJLUnKgYHHTOfaonkIXfgdcLS78gk9O1VRJuJTtkV1UomN\nVXI3Rt+7sauW5AUA9TULITk1DvZGABNbWMWzZLs2NzDgYGKkySAM7jWbFMT0OcdavwsQAazSHy2F\nBIcjHSklx0wfxp23B4796ft3LzRawNlbj0oqQxjPSiruRoQgqRl3wtBjZkXYdyKeOetQtxgsQPY0\nws5PBUe5NZvQ642J8HO9jgnooHakabyk+QFWbq5FJEr58wScj170XDMx38KR39fwrF1UtGbwpKTX\nMZt1cm2ZJCrToTn5ec1Pva4AYJ5bNzj0FRSwuzfcBBGScYxTrZJXYDOVzg59K0jUhKzW5MoVIXXQ\nu7i8ZZpOWHftUcUv77PUdKmdh5YXAIGQD6ioVQL8y/XrVy01OTmSVya6uRgRjr60tu7MmAfxqm0Z\nlk9zV2KERqFzzWMmrETbnqiTZ5gKsxwTiqtwhikw68Y6mr0RIU4IyvrROqzx7H9MZrWjU5dHsYzM\nkSJvGCVU4q/BISVUOBjORjisa9tJ4WG1gYz6UyK5a15ckdhW06kTSFzrY5gFwCF/DGapX13lCgP3\nuKorcnyg5yM9BVITs8rMxw1clSat5m1ODk9jTMKpAJAc9qi2k5PAGKkSQ/ZDGSBu2kc9eaYwVQJH\nXcvTFcsHrqKdO8rsdu2jHTsTVdrnyi654PY1Hc3KgMkQ+lQC2eZg7HIbrjtWsKalq9ivhVmLI0ky\nhQ20E8mpLe3RcKMdc89TVmG1ACMRx1IqysAEp2ERKf7oy1bqSjojLWXWwW42OFyqtjOCvWpprNZI\n3ZnYHGAOxqWCIRgvLO8h2kZkx+lSuXZSdhKjoAK66LehjVaWxxl3pUpbODgngjB4+tZGpadE1ubG\nQkxvwRvOfbkV2tzkkb4mYZyUBx+NcjrMuwSRrkhiSofkrXY4pEQm76MoQxQQlY0RQqggeue9dBpl\njJqLEo6iMdWxk59K4u1vZ5roKUztPK4wB+Nd7oUj22nMC2Tyc9MmuOs0otrc6dZErafFYy4SVnbu\nM8VbiYDLP06YqvGd7nOc4GDViRtke3GSe9eTUlKpL3jqikiKd9xwvQCkRCsYG4An1oiGZBx7VNLE\nCd2cADGKtNR0LSctRgY8cjNOG3dkCoigHOcil2txj7o9K7KTRjViyyP3iEdqY1vkj1oibA9BVuKU\nBfuk1pLyMCBbcqAf7vtU8RIfnNSqy7AB0PPNKsS43JjPcVF7PUe6JSCfm2n2pYsbsE454pYhvXnI\nPoTUb4RgR1ptXWgi55GemKKjF1wKK5bTIuZbxqQRtAP0rPeIxyHGQDyK1ym4dOapTxMDg88/lW0z\nqovQgSZweWAA+7huc1KoeWQM7I469eRVd4wWIHIAPPpTrc7eCSdw4Oa55RVtTrhNxehqRxK65Y5J\nHcUCLy0YIQPeobedWJzgcY696meYFR6dahU+VaFVKvMZ3mYbb0xwakXkZA5/nURUteHA5P8ASrQH\nzBTjPt2rq51azPMno+UIUIzJ+VSqwZeOoHJqJpE+6DwDQXLQkIAKyerBxsrIeZ40BLEHHTNQPern\nAbJqn9jdny7Fh+lTC2WNN2Bim7RWg40UnZskS4jn6nOPvD0qLZCswkcA4XOPemiFULNgA9yO9EMR\n53Eb3GQD2FZyl7tjeMFGWhIChOXzkjI9qfJbpLF5i49CaiaPgbJA+eo9KgeSWLCHPWlFppJBFSi7\n3Lu3bCpPJUYAFQk3DxiMEBTzUSykyqSSNpwRVoSiQMy4UgcA96pKxpNrRohSPyyScZ75pj38MAzg\nE59OKuJEC7MkrKT1B5BqCVVY7SBuzyCKdOsk7NHNKKk9GVP7WdmO0pj0zViLVWdtrRnjv61Tn06M\nhm27D1yBjj6VFFE0PLqXQdCK6ozjLoZShZHRQTmTD7wwH8JxxmrLTFE3u+0e5rFiuvKj+XGW7AdB\nT2vQqjucclj1+greO1zmlvYu3IinV1bJbGdw9a5i+tkIclQc9c9a0/PZ33YCg9AT1qO9t/MjPlAg\nkHPtWkqqS1HThdnNQaepfYioBnc474zXRWsIigBwQHbC1Ha2MnmsACVHG7H9a03RQVTAwg6V59at\naLPQpU+Z2QsTRqMcVZ8uOWPHXvWf5DRkAHcKtW0m3Jb8K82Tlugu4siceSScgelV1usnBz1q1dr5\ngynT0qnDAysSRxmumCXLdm0ZMmyW6kDNSR7lbplaVY8ctRLcKnQZ9vWtYX6BNp7kigEnJwP4RUgP\nB5Bz0NVlV3w8yjk8L6U+OSTzlT7OxQ9SOldcbtanNU5L+6Tkk4A/CnKzK4OTnPT2pyOMEkbQO1Kq\n/OHwTkZH+FJsmJJHOWUEY3Dp71JI4mG5ePUelUpE8pi6ZKk8jHSqk15JbSiVVJQnBFEXzbDlGzNU\nA46UULdQuobGMiisHKRy8zJo0Jb/AGe9JJCGJBGfQ1Ogxk9KikZt3yn6E10NKWhvGbT0M6S3LYBG\nFH6mqk1u4kyucKOmK1g3mKW4GD+dV5eAx6BmOPesJQtodCqMpKQjEZ4Az+NMe6y6qOnU0lxKIBtz\n856VUgBlfex+RePrSURuaRehfFzuOclcintc7UPqelVDKVdTgZB7UwsWck8Y6VUopnG3d3ZcjbC5\nYAsau8mLzgBkDB96yxJluOnStC2kG3ax4PSsZu2wuZ31EE8e4EqFPt0qcqoXB6E5xVK6hZXKjr2q\nW5l2iNOhBAJH0rCc23oytpKzHXIVUUDp1OKiKpuOetMmkJiDjoOPrTJH2ogHLNyaUXobOq2x6xkg\ngD5uoFP8p8neAWAqzbqPvnggcfWoJ+X4zn2PWiE7tozjVcpaiRWySHcpBPfmmvaFZgSdy9qbMJIl\nLqMHHSorG+eVyWUjHHNaJtps3m7x5kyxGpWb0ApLkb3+qgGpi+WLH0qKRT82FUDHY1knzImjFSq2\nZTSdI32Sjnpk96s+WHO5VQZwR81ULuB5yu0bSOK0bCCVAofBGOQ1dMZu2o60VF6PQhmsZBh0ycjD\nJisS5unico6FWHTcORXeRRrtG8qWI5x2qjqunWl3EWbAccZxVqu9ji0uchb3mZRkhR2ya6HT42uw\nTj5egOMZrPt9Jijm4xj1xnFb1rPDbj5jkD35qZ1XY3glsiy1sltbb2wFUZA96wlZvPJI6k5rSu7n\n7T/rD8gAIA9KqPGsbjHQjjNcNSpzaHXh5qDutxSp3A9u9QTuUA29TSKZIvMD/dJyDmmSOrFQTk0U\notKxpWacrli3BdfU1bSAKmQAPWqJk+z7SOQatJdKUxntXRFtbk2T+ERyF6YzUEKb5S5AwOmaZNL8\n3yjknFTw/LD3ya7aempzT8yRiGBx+lSqxKBAwFRId3BH4UrFUOMYP6VruzNj9vlEbjjNTIiIMq5y\neopixALgHcTyTU0S/NhQCKzkzSJDPuk4J49qpfZ33Eox56jrWjMmASclvTtTIlKPg43dq5OZxZ1O\nPNGxSCSAYAwPSitFkUsSVOfair9ojk9h5FgzLnqeKqXNwMBQeT2qsZTjrmmNhV3yYJPCjvXXsZKL\nLXmBYxnr6VQubgbunI79gKa0kszZVgueue1LsihXkFy3U44rJvXU2SZRZJJmDleDx+FS7XYBQCAO\ngFW98RQMDmmmRCuAvPrWiaS0Je+pV8mRgCBgUq2zF/WrDTBkCFCue9AcJIxx8oHNQ5C5Y2sQtGRG\n2Ox61YXKxgjrVZpg3CAsAeg6ZoaWYqBtCe+4Vn7KUvhIlCz3Ll5cJERK7qoI4JrMfVbbzCHlyM+m\nKp3sgaQq2S+3qRk//qrJngY4kWQo2OfQitPq1ONubc1hGVR2ijqBcCVAF+bvx2p5Bklj49uK4+2u\n7iO6GXUsCAu0ck/zrrrK4+02ol6SdCoHSsa2G5FzQJaSRrKgEPyZPrVRWzLz68UGZvs2wHGBzzSw\nRM5UYDc9+9cUZJXuSrxXKx8w3Rg46g1TtUEanaAOeKvTRPFGqYIBP41ngFJiRkKTgDNdMFeOhrGn\ndcpcGQSJMjjvVCQzXR+R9iKQS3qBU9zI7lbdGLE/eb0FLsCx4QfdHr1quVU9eoRXLsTxvEBuYZzw\nPale8RQThd3rVOVt/wB01EsTEAsTj+dEmktTmkm2TPftCu5mO3gZFM/tFpF+62D27mmThWiZG/jG\nCKYskcY3YyS3HsK53K2puorkuTJNI+WkUqM/dB7URsqnIJOdwAPWojMrTYBIAyxI/SmRzcScHjkH\nNc9SbtqXGUeSSRrxONgV8j0qCS44aI4znduNVBMw24bOT/SpJFM6xSYO48E5qaT5tGYRqWaLBK7A\nxyOnFMECvMGFQPNtmZOg4GDVuMhIGYjBI4960SlDY0lKSdyF5TIxz90HgVGw3AkNhuw9aq3FwYvu\nDcTU9uxKjPBxk13KD5Vc0pPdkpHmBeMc4NWMlV25zgVDFKsisCMNnIqXdHJEcHDryR6itYycXYc4\n3Vx6OQQf51YAzycH61RX5gM9+atxtnCkda3MbaFhizABHwakjdwAN2GI61GYw/UY9KTdgkY6dM9q\niSLTLjLuPJB9TUaLiQN16imxOOOelSE5I4rFwuaqpZE3lD1oqPzD6iil7NGfOzIAY8htv0pn2cFj\nIWYn0NSA07eAMH0rpuDQ0xgLwcGkyVAbO33HQ4pWYcep603JMZCAZ7ZqJJPclXGmNXxgge/ahoTE\nWVlBI4yKIo9seX4J646VKH4GTgEDNYO8Xoa2vuVCrfwLkd8npUbQCUYl3FBzgHGTVqWPaWG4gD+7\nVKac5xHEdq9271rB82xm1yj/ACliGY+FPUE4qq1xuLgEZ6AkYGPwpkvnyDDDI9un+NYt1cSphFUs\nT12cBa6qclszLlZeln8x9ryKygYAI/lWfdQzTyhFlCx7cFSufcc9MVTN1IqhXb58HALdMc80lrdi\nSb52GzIySeG+lbxUWJSlB3izattKgmIwxLY3KAMD3qxHJNBJi3hd8YBAGcVsadHHJDkKVTkZP8P0\nrbneCx06Z441DOuCcc5rKs+RXWoQk3K25ziXLl8PauHyQVBBB+tXYZjGw6qe3eq8MfIcn5m5NWSV\nERGAz7uorwakuaeiNrReiHXFzJJgk/N2IrNCyDe6gyDrj0PrST3DQyAL0PXJ6UPNIhUQkZIw4rqh\nFxidFOz1FST7MhkLAkjBY05blnQMIiV7DpmjEBOxwB69wDU5RWB2MCBwCKp3a5iK0klylfzTHglM\nOegYUx7qRd3nMVjBzmpZzmRN+Ttxz7VHJA0ikAbix7elYuLk9Tmc1ErtMkoY7idwKil5ZxGAdzDJ\nY0yK3VJAD90dKjeR5jvTgE8AelZ1EkieZvToOjLJclGJDYyef8+9JbzhJHOVRQWBz0xnrTd+wvM5\nHCjqe/8An+dc5qF4Eb96wGMEKVzk56Cijh5Tk10KjG2rOlj1S3kZQm52xnIFX7e5Se2Ih5x14wR2\nrhLbVCZfJZkibBCqwIJ9vatuyuTIodflPAzznPufzrv+o00tNyWu60N6BTMQxHzAY/LrV55dluEJ\n/OqVncR4CyHEpGGJ43E8frUpDzIBnAAGRiud03B+8ErtaFd4y2MEZXtU8cTJE5I5C4FWYSsQAC5P\nqacqGXdu6k9KuM7jUuUp28ZVtxFScrJkDGasyAKwOQQfQU2VDxkdK3Uru5fPdWGqOQelWhxgqMGo\nImUkcHj0qZ2AGTx6VSbBaoso3yjJ5ofIXJORVJJwWA6mrYbcucZ9BTsUhIyNwOcjFTNL1HtUHTJ6\nVCcmTJ47UJCZIZiD1oqPYaKLCEOQOBTDuJwetXCnYVCYtp3EZrPmNuW4wJjrTzhQB2FCsA3zDmq8\n8xyTnik5NsLD2k3nyx3qeWL92G7Vn2zncXJznpV2S6URbDj86yndPQ2io21GbucZxgAZqGUCTarA\nq7Dg4pN4RckcH0qJGcoPMbJLfLnriod4u6M1ZrUrTtLCQONucblOMVg6p5jR7lYs7DGcZx+NdNdI\nXhyuCvcYrEltTNkKADnvxW6qJakxi2rHLTRB28pC7NnkjBJrR0rTAsieZIcrjAdfu+1Wv7N2Ocqq\nnrwOT+NTxKEUEqfNIwo5OPxrphV7mE4Pob9tcEQqBnA/X3rSkZrqBUcjbu79/wDJrF0+2eV13Emt\nSaQQMsQACr19c1Fet7rS3Jpw94HhKABFC5PK56VGuFB4wCe/1qaK43fK43KR37VHdphNy/mK8lTt\nJKQ0nuVpEEs+eDg5xQsccYIILnGWzVA3LxFiCMng1oW0nm2+4qXOOOMZrsSa32OyDThoQrCjy+YB\ntyM4zkGmTwBNhIKZ6MrUvmuJ9ip8q8/SrFwFMOGJAPQdSKnn5J6GMp2fKyiscu8IXZgeetWkuDCh\nMbbieD7CojIYUjMp+fHzYpsbiWViMbcYWt+V7nHLV2JkTcWAzx8uaoXXkQlmLnPRQp5zV8xNIjqJ\nHjLADKDkVktp0sEu+aQvxgMamFGM27s6aShrzHN67qEqOQSRGADyDk5OO2BWLFeiUnZIiy/wbieP\nVuM9q6nxDob3eiyPHL5WxgUP99q5bSbGWC5nWQbWHLNjOB/+uu2lrGyVkXF04yvU+4o2NtdidzcA\nNFv+Uh859wK7OwO2NS0pDAcL/D9CO9UY4YYQpZGeQHjJwAOvStG3s5Hdmi/ebcgA+o5x710ONtzm\nnPmV1saoJeJVUhAT1xwp7H8xWja3u1xFdMqzNyrA5H+c1BZQtDEV+++MsG9fpWgwZoPLCgAc7Qv8\nq5aij1CNRxVrXuTKUFsWBJYkAdu/Jp8EjI+7rk4wagEbxnbk+5Y8flVhTweBk9MVxWSVkNrW6Ca4\nPmY7jtTUmL9cnHcmqsjfMx6ZyCaar/MBz+FbxguUI3ctTRhJ35x+VSyfMvPFV4XOQASKsk/KR1x3\nNGxpEroqh81fHAyeBioYUAGSKk3n7xOfQVaC48LuGBTiq7Onemw7m+8MU532gZptCYm32oo3GipJ\nAMNwzTpGXbioA4x71C7NnIpSgjeM2NnPoaz5ixPHSrp+ZelRCIs/TjNSrIGmyBS0cQBwcd/SoxIX\nkGTwDV+S3Cp8vPFU2RVJK856kVnfmYKUoqzHSTB12g802M9ckkj7v1qLPyEjr0pVyE6dxzUSVrmU\n5vk5UWRJsBPX2p08FvJGHVSpI6CqskyjG51AHc0LeQOBGkiljxgmnGlOUdjL2rhqZ01nMXKruCf3\nhyatWdkd6nBOeTuPJqVBHHICwYknoG4/Km3lzIPli+Q5HTuKlU9dy54h7WNZbuGxtzHEAZSMFh2q\nnsWRtzEnecZJ6GqDO+xRjIbK4qaO7IUDBww5NRVi7aGcZSUeZdSy44Cn1wT1od5DuUcqOnPamBiP\nm37hnBX196c+CRwQfcVjd6aA3IzZo97hvThsVdiZolUE9FxilYxp82wHtgVCJt6+Yh2nOAhHJrri\n72OyF+UfKSvzLnlsE1KkpEbFzuHA6elNO4x4XHzevaorjIAUAkDv61agua7MJy0KN9KXbI6k9Kdb\nJgBuQe1O8jzn5T7o61ahgaJAoJJ7CqlVS0OaV7XRLEzMxzjaByRVpUE08UZTILZP0HNVwpjLD0Iq\naB9rMd3JBXp071jza8xdCbc1Eh1O0juBksAo6LjgfSuTmhS1lfy1zuPOO+K27+eQMrc43E9c8dK5\nm9u+VjwPNXLYI4x6elejSkuVGzi2yxJOtwgEiKcHqvJ/On2k0qSHKkSLjjt1/wD1GsqGUJKyyDBR\ndvPAGa1o33FGkXAbP3Tw1VOqrBGlpY6S3uEkwJFVsEKTV2O6gCsVGV6EehrEgI3kFlwBkY7GpZYp\nFkDpgEffCt1rjfLPqbezUVqjeDW0yj58H+fFSeVg4HIPTFc7FcMNu44yO9Xobp+NrGpdBrZkSaRa\nMG0MepH61GsLDkgfnUkdx83I6irKvE45BB9KLuG5Cd0VU+V+T+NXG5UYP1qNoQRuJXIzwOlKAzLt\nYHacGqunqaQVyxGox17VGzlm+UAj+VOyUUHtUbA5XBAHoO9XFisWYz8uP1pzAkjP3fSo0OBz37VI\nWyuOmKpkhuFFNoqOYViuOvNSKuTwMmk2AjBpgBVuGIPrSkmzpUkhWjzwB+FQLw4GCB3zVnedu7gk\nUx2VxuA59ahX6lWvqhkkuSdpFVAyxscjr0Ip8zhGUZ5NIQFG7blsdB3qlEhrmd2RTICy4Iz6VlXt\n2UYxwc+rYzirsltckuZtyn0B7VWW03HEYX5QTyfzrejQi5au5z1ZJP3TEmlkJOTkg46+2azobiWV\nwASGzwR2710F/aR/Zl2J8xJLE1lx26RgmR9g3DB6dTXc4JRJp3nLlXU1ra/MsKtKwDcgn3qz9ogm\nbcknPYYNZcMW4ME6hiCB0PFKsMwXcowcfLzjNcdTDReopx15ZLY2Nw8sKAOGzycUxGBXjkYyKoRz\nyBMShN2ORnJz9auW2wjKNhsYAPArzp0XHqN0/dSiPt7hnmBPCnOOfSr9wRFEGB6DqPWqSIN6kYGD\nn9atzMHjbK/Lng1lH4rjnG0iiLhnGyUHJ5zTGQQZeNd8jZJyefwpETfcgAc+vtVxk/eMoXgAAV0u\nSvodFN80WNjfem0ttJHaoYXm3MHkLDtmpFjKN8vGDkgU6fCqBH99uvtVN9DJrmuiSCRVkKyMuSKk\nnZWxsOCO4rPt4VRy2wM+cljVhCzliQCo4AHFTOCbOWajF2Q+J2V2Zzu9AafkAF1Y/eyVPrimiOMy\nABtrY6dfwoAxEW2ndnpUNe62jbCq9RNlK4ZXgQIC2F3H3NctqOnmW7c5O3+JlPGcf/rrpGUiSMRh\nlXZjJAK+v+FS3EMaAl0TOCOnbGa53WnA9iNCMtWcmmmSxpiRflQ/MOv41oQQEokibtj8jPUVoC4h\nc5RwCTyCOtSxyIAAyg88MOlaqs7XFKkr2K0IaOJkOMDOSO4rQhuUaNd49s0qiFl+U/L/ABcVKlrE\np3Jnae+ODTU4tmThLYmPlyIoZcqOhxnFOWEfwt8vpjFILfbyrdeOtT+ZFCo3EsfQCtoT00OedJ2F\nWPB9qkSJgpIP506PM2CRsU8DNSKNgZRhuCCWPFDm+pgqDeo4Kx4I5HUUpZ1++4bJ6elM27l3MxVT\nx8tKNoAA7U4NmjjGJLtxEwZyxPQY4FIQBhscU0v0yKSXlFLMeeg7CtVoJK5YBIxkHnnPan7mBAVd\nxPrUKPhck5z2qaNwvyAHPUmhvQh7j9p70Um8+lFRcQwComznirQXnpRIhxmrcrFK7KgNMmbYNq9e\n9TkCP5yPlHaqhJZsluOtTbU0UrIhcEnnA9aapw6k9SevpUgTcwOM9etP2fMNq8+/aqUktGUpWRIP\nmAqhqcKpdpJGoUMpJA9emPzrRQBAWIHAqlqAP7rGCwY9+pIrTDq9XyOeo2rvqZ1zGEhVWAJCklc1\njX8K3CtAciNwQxTj8f8APrUl9fCJsnOe+eaq28huJQcFscAZ6V6krNHPFuOpct0S3Cqq7VGAuTk1\nsCJTHjBDMOeOAapxW0iSiaRNzMPl5yPwrXtgcFtpKg/MCO9c07JGmrdzGmtgsgAbJ/2v8agkgK9F\nP1HIrbvosoG3AjklR2rEmikVMhmjA+7k8n8K4JSVzpjDQW2uJIiHU/NghoyfvDPB9j2/CtD7R9oI\nQ7QU7buprFnha8iyJXVY1BVsYLH+eMU6JCrYEvIPy5P8hUKEZavc1nTSSd9TaiQ+b3G7pxzirC5D\nMAPlB6nvVO1mljwJF3j1wcitCPa6kp1x+VY1ISi9djDWOiIlZI02A4Lcgj1qNYs7huwTkjPepfIJ\ncnOaYyNuXGSST0q4vW5hdpWI2kSNR8wAx+tKJmaMJgEg9R6Ux4VlYLIO3PvUsaJGBtTK9MHtU1Ly\nRa9nbVajSzrHuUYYngmr1tD5yN8pLMc9eoNVcKzKSoz2GTVzS5PKuVCnGMfkelKC0dwjLsVDY+WB\nuicbdy9iCM5HX8qqXJWQAOcbSNo9R/nFdJf2xJ3gLuB5JrmNQtnaIsmQVbGPSpcbnbTq6aM59vOS\ncIQA3Xd1B5qWK4Ziw3nd1I6Valjf5SylHXsR1oSDLgnaGBxjFCjbQ19s+pNBJEwGJWHqDV+KQxja\nHZh05BNV4LH5h8oz6itm1spCeg2Duxo5SJ1SGKNnx8pB9B3q9HCtsu5woDD7p5NKJYoztgXLdC/+\nFNG9pRuGW61TagjLmc3a+hLgTHYCeD1IqPaCwUEgDpT4wyyuRVWNyZz9ayTbCTa0iX3jxbN61WjU\nlh1qy0x8vHHAqKAbpB/d9q3hL3bsxhdi+VkYwfqaeEHft6VaKBozg9uKrryccA+lUpXVxPR2GkbW\nB65PSnqCX69RipRECcYwalEAHTrUyqEOVtSHY1FWNhoqOZC5xuecigsOp496i3npjn1qNldjkkke\n1dSjfcu9thkz+cwVcjnimrAWb2FSKUXpUyMM1coNrQvmS3IDARTxGoQEjGOtSyNg9ah8wg5yMe9Z\n8jYW5lzXGkqysQOB61S1JfugDBIzxWizS4wQBEeRgdaq3sYaKJhj5cqaujLkldkv35I4/UdMW7fc\nc78564yaSzshC+XOeQME8VvMgXOQM9R2qjIpLjGPpjmumVW2o3TReVhHGg3g4OcenvU5lZHBdQrZ\nyechs+tZKXSONm8hydpX1p5m+QMsr4AGcY4rmnV5lY0hBaFq5DNHgRBWyc7c7RWbPD84ImJPU7eT\nz/KrYkD5BUE5wWLHHT0qRDHKSI0XGM5HcVwzrOB3U6amtTG8h2mbczOAuMNz0/8A1mrUCSQ48vDq\nvRR296utHIo3KVA5yo/SpooZH2OvDHbyBz0ojiJNGdWjFEMbTSqd0Lr23Zxjj86cYHTlZJQ/H3eV\n/GrU6LEyo3L9T6Ck8xlH3ckVtGcmtThm4L3RokZMbiDnuKeCCC3cHrjio/M3NtZCKUxMV3DO3OQP\nWqULGMmmDfNk8Ag8A9/pShDksN3tjtUogd3B25A6E8U5niUldxdhywHGKlk8snsMwFQYX8zTIlO8\ntt5GBgfWrG+Nh5rny0GAB3qWMxrMhU5A5GT1PapTSdhwhJas1Wn32rQyYZ06etY9yIrgGWIE8YdV\nPH1IqSaRw4YjDCqcvMwki+WQHkjofqK0jFXsxQlyPQqtYmR+eFznFLFp8ok5Toc9c8fhV6G5TeFn\nRSW7qMVeiePdtA4+uKUo8rszo9o2Ns7BPlLnGe3vU14iFfKg+UAckd6UPwQp6jAb0rJM8sU3ly5x\n6+tZy0ehtRgpp2eoS77QBghZTxx2qeOUMofPPvT1lEq7gByOnao5LQNh4eO+2lKKqb7hUpyW5NHI\nuM4wCKIkV3wMVWCMwZDnJ447UsbPE+0DJA5NSqMlsZ7R03LskHBJ4wKrxq68LjHUEVL9r3gKOvep\nI9qg5wM84pq6VpENtArNjnOBRHgtnjFOJXkg5A7VArEHNXFXQLV3ZoR4Hfin7u3NUftGxTzSR3JY\ngVLjqV7O6uX91FQCYAdaKrkRn7MjwcdTSlCRkk1JxjFKRxmrbaZomivJHuwQOarbpImKntV5uOKi\nKAknAJpxqyQOKZGkuRz1pSwbjg0xo+cnGaMsDyMj1FaxmmYzg1sSZwOe3QGl+/E6gZ/iH1pvJHXi\niJyrDGSff0q5QThpuKnzKRmTIMkksB344P41mXJ2OTtBAPBPcetdHc2pHpg5IxzxWNPAWJyQDnoe\n9cntG1Y9BJS1RkBFkm82LIPQ+1RlGdmjZmXKgbl9vWtDy9pyowc5+oFAjCgnAwfx5rPnb0NpQS1R\nXihl2g7yckAitCP5NqqM4OBuFSW9sZGyQBz0PY+ta1rZR8OSOe1ZShd3Ye2sinBayTAtt56EVbFu\nlojMSAewrTPkwwnOAOowOtYlxc+bJjhcH5R61rTot6s5aldyWhG2XkLkqT39RTGOenBx19aVgxUg\ncEnnH0o24bAweM8Gui3c5Gr7jxt/hXle1ILkyqvloBtOPmpxiaR8pwT+tTCAR8Sjn2osupXNHdIr\nBZptys7N7DgCnJBtTGwqAeeOT3q4IoZIiFB45yM5qWAM8a7m3sDtUt0x2rGaaWhrGdzEur1YruOx\nSIu8qsRIq8Ajt/OlKuiBXO4enTB+v5VqC0AkzGnzDjOPu1WMKMWUycnBOTWN77I6Zq0UUczZO1yB\n78kVJCZE4Khh6irksKi2Dr8jJ1GfvVC6EAYxkHr6VundHDNXZBK7PcQRgIQ7clgcAAZ/A9KmileL\n7xGe3emPGZSCBlgcgCnMkbKAu9WzyG55qbXHKXupFgXYXbu78cZ5qUvHMAjbiScc9uapNEUAIIx6\nA9KarOhHyZGecd6VmVG26Lao0Llo8FSePepInDE8EYNNV0cnPyE849Kdlg24KGHtxmmtGbxqvaRM\nUKtu756imBcrtIGKkjdQBuJKn17VN5SkboyGB7Z5raMl1MqmmqKZhO7I7VYjUk881L5fy8jr2p23\nA4FKbUiHO6VyKUYTA/Go0XIqaUflRGvHPSrhHQVypNGck1GiEHP860GiBHJ4pI4QTV8i3D2jWhXG\ncdKKveUvpRS5SfaCIfWnFxim4zSbCOlQ0CGsT9aacY5FOJIPOPehQCcZrNl3uM29ORRgYIPQUsrK\nvGKrs+COuKEmxOViQlfmI6DikODkgnnHXtTN2Tz37ClDcEZXP1rWNRxFzWLEcq/clwB1B9Kq3Vsj\nHcmPalLAjAwD3JppvNreVKMo3QmplBT95bmlKrZ26FC4syrKQhTPIGOlUzE6jGOK3iMADIYAcH2q\nF9hUk8dqz5LmirW0ZlRTsrbCcc8gf41ejvl4jjyPQA7jSSQRkFgcY5PpUBSSIP5JUMeueh/GjYa9\n57l2aRrgsBk4GCM1ViiI++23n+70x71HbvMqJ5i+XI3LAHNXygZFdAf9oYranPm3FWhy7EABIIA+\nbqTnipUVDtfOOMcik55Xb+tSqu6JlyPbA5qpRujnvZh5gMgAwOckilkcAMAdzMevtTZrZ1jyDjPX\nPYUy1jYyZblcfnUWT2HFaEqgqg7MeAKuxeSiIC3AHSq0qsxyMYAwM1CpcNtGOmcYxUyQRZqTXcUi\nFYxtPcgcVR3s0irhTkYLN1qv8zuAFbOe3Ip7o8TcnKkdzzUeztqi+fSwShS7EOGOQiYPA7k/yFMe\nLeM8KcYJx3qRNoChhiNsjgdPerEiK0ihASPbvRZ6ENlJoQIwqgjIHzeppPKYncwGWycE9BV1rZYi\nMHHcjFQRjh3YZBb5SeQKpRs9CVZxI0hwASAMngCnpEQVOOScDFSqCz5cAkjhkGP0pQ7CXagYfWqe\nhKQwWqnae+eT6VLFCEwqZIx09TUgiQxFSzbs8kd6UpyAOFHvScblq+xA8ewEFQMdVHNCy/Z8yNgI\nB3qdF2E4xlvxqKYRSKYnUFTwRUNJG9Na6lhXWUb1PXkj0pzKRVVNsJCrjA4FXredGBVwMGpi+X0H\nOndXK7LnrSjAIBq08SkfLgVWlTb/AF5rrptS2OV3Q40o4qrvIPWnq3PWuhx0IuWM0UwMMUVz8xdm\nL0oLY5NM3DvUUsoIIHWs3oVGLbHswY5/Smu+05FVw7E8GmszEcc0kkzVU3YJZd5xTUbHXJ9Kbgk8\n9amVScCm2kZvcQEnqc803dyf0p7A9B9KaYiMZ9KixNrkBkYk4HX1NRupuF2svAPJzyKnYxJwF3v3\noZW2ZBAJ9KTemhrGk1qynbedG0iktKSfkB7DHNSkyMCSmOe5p2YmmPlsNuAfcHvUgj4BzlD+lVTf\nVlVr30ER2XaV7jkE/wBKcUWXPQE8nFKImY5GMDoO+Kl8oKAWOBjqKuSuYqVioIAjBV429D7VPD5s\nRBIGepHYipFVt2Cm7nr3p+1GAB3Lk9sVDTRqp9BpjQuXXJBGcGnQttbe3UdqfjAG4jcO47io3jG4\nFMneenpWkZ3RE42s+grsZgd+celOihKquODUqxBQM8/SpVyM9PpWd+xN7srSJhV55zzTAAXzg59a\ndOjk8j6U5I2CZHpV7ILXeg+CLaWY/gKZchkbecsvsKIy2G64XgCrEeWUhunvUN2YuXqZ6g7mOfk9\nDyRUkbOqoR2GOKma32hijZLc8jpQqsCrOMBmJOPpimpJodugxhnPPOMU0p8pReFJzSiNllbb8zeh\npwO9Ae1aRsyXFoYq+UnDcelTbSVDcEmmjbwpIzUsSFckHj0pMm+pGWYAYX6kVJvETZADL2oZfkGC\nKgZgDtxz60kropPUn3bvunnvUMmAeRgYzgGoix9cYHNORgc+4xQ4M1jJorlmDtnv0HpViIlSD74q\nvLE6nruPYiljdt2Gz+VYyjynWpKSNFZ26VKRvG1uD61URge9ToSfvHNJScdiHFSWpBNEVqENg5rS\nKqw5FU57Yg5Xoa6YYhNWZzypkHnH1opPINFac0CbMHn4wDzSIpY1Ug+d9xrUgTJGa5Jyuzup0lFC\nJB7U82/4CrqR4FOMfHSiKZTmkZnkgZ/SnBOKttCM8ChYvWrcThqavQrJH82cVFdMEj2jlz+lW5GC\nR4HFZsjEyetRLU0pUvtMjhgywyenerLxYGKIE4yT1q0IwevI9KcTSq3uUBCFz0GepAqURgfMSQgH\nI9TUxi3HGMc9KQKQ5H8IwOK2UUczk3qNVc9cKf4c808ISCOPTjpUgjQAjILfypSAGyOmc5pS02IV\nm2NEbKDuAyOcg01YQ4PABzUnmKEy2OlP8wMcFV+XrnvWbmVGEit9neM/uyp9qaJRET5gZDgnd2q4\nXJ7YGOwqCULMNjgsrdQaSmi1zJWlqhDkAgHtn6063fbnIqOQBWCoOMYAPpT4wMe5/SpvoZq97okc\n5YNjnrRt2rgnnqQO1O8spyBn3o2E9TjPpVx1LT11Iimw5z1pcHBwTnsKk8rL7h+NKfmY/Lgik7la\ndBiMDx91h+VPYbV7EVEE5JPIPGD2qU9CB0qUxSSIJTwCvBU5BpmGBxke/pSTMQRUSsSSOfStU7Ih\nq5OrbipwGHbAqzF1xnqarKzDGBx61Kp5prUnltqTSqFXgY74rPK73HHNXWf1NQopMvFXGNhMX7N8\noyAe2aX7KFAx6Vaz2PQUhYHOKE2K7RVMRUZABPb2qjIh3Nhjx3rVLA9egqrcQ5OQDjNTOGhrTqWe\npHCflHt+tWI5MjLdagjwOtWEx2rmt0Z0XJN3GRViBNwBbFRogNSOfJTPas5OyLUW2ifyI/QUVR+2\nj+9RWPNI3+qTMWFQDxWrbDCA+tZY/dmtGCUbVz0FdaWo90aUeDUpAxVRXO0laiiu2Z2U9q6VH3bn\nHUTbLjKNvJqpPOqgheBRLc8cGsue4PPNS1cmlDmdx005bOT9KijXeck1VWTzZMZ4FaEKHjFYTl0R\n2qFlqWYk6cVZ2YGSe1MiHHIqfAI9qqm2ctcgdduCe/T3pqDaTkA5qWTrnHPT6UirmulLQ42MUBVJ\n6sfUVG5IzzkHjFWtn51HIvoKzBKxRYgggZxjiprYEkAnnqaR0w3oOlOhyOCcc81m07nXCSasiVkL\n555IxkVBICu3dzjrVseo6UeVuHIolB7opWejKOAASWAPUVOigJnn6Ypk9tgknJ/pSLLglSTS5bmd\nSHLqi3GSUGB1GaX72c8e1MU9OfalySxOAB2xVJMwSJEIp2QecVCScD3pQ5DY9abiLVMe+0YzTTz1\noyCSTTdw7mlyjTZWmRS1SW8WPmNJIoZty496sRj5OKizKitRGiB5pnl7Tnk1aRSeooMeeaaTia26\nMokY7ZJ6+1LGMHOOlWipHYGmGLoR36j0rqhNSMpQGEmmkjqDmpNtGwE8VqrIy5WQGQLgFeDUkchG\nV4IPrQYwpyQTRtKj+pq3FSRLbRWuU8tAV5B9O1UluGSTIOa1JIQ65zge1UHgw2QOBXFOFjaMzTt5\ngUBbGafIGmG1axFuWVvmPHatmxuEkABIBrGVO8bnVCo4u5H9gHvRWttWiuPnkdX1uRyUh+arVufl\nooruRmi9ESKrniRsUUVvD4TLuQuTg81lXbEZwaKKzW5ph9xLOtu26UUVyS+M6Z7Fkfeqwv3aKK6Y\nnn1iN+tIn3qKK6VscUtyYU1wMUUVi9xkJAIORTABk0UUupVPckB5FWogNtFFaSOiGxXuuM1nA5YU\nUVMNzpn8BeToKk7UUUmccBO9MbrRRQgkFNaiiqM1uIPSrsI+UUUVm9xvYsYGBTG6CiilIuGxE3Sk\nTvRRRA0ewx+tN70UV1rYyJP4ailooohuTIiBpkwGw8UUVVbY5pfGjBuuJOKfayOJhhjRRWUdjuWx\ntCeXA/eN+dFFFctkUf/Z\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "finished step 0 in octave 3\n",
      "octave 3 image:\n"
     ]
    },
    {
     "data": {
      "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAFDAUMDASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD0Irkc\n1XljxV3HFV5ehrBKx0N3K8fWtC3Gaz1BLcVfhycUpwvqc8odS8owMdzSPgcfrTo3ylQyPxnpnt6V\nhysujJpleUjBzVNnBcCrFw2BVCT7vQjPetqTtua1NUXYSrN1q2vBweT2x3rMtm6Y5I6mtOE5Ye/e\ntJyscE3YnhTIyfxpbhcRE8/zpQwx71FcTBkxzx6VEXd3IjLW5SmjEke4EcjpWbKBGSW4xWqsRBUg\nYLdQe9VpYN7Biv1HqaS0lc7lUUlYhiwOP19K0bdiQCBxWaAVbGD+NXYGPBzgelb1GnE5pu6saP8A\nD/8AXrOuWAkKjk9KuF9keeTWaWOTjk/SsKcXcmCsiIq2eB3qzvQYHbvTVjwo7nuTTWQgKcdDkVo0\n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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# these octaves determine gradient ascent steps\n",
    "octaves = [\n",
    "    {\n",
    "        'layer':'loss3/classifier',\n",
    "        'iter_n':190,\n",
    "        'start_sigma':2.5,\n",
    "        'end_sigma':0.78,\n",
    "        'start_step_size':11.,\n",
    "        'end_step_size':11.\n",
    "    },\n",
    "    {\n",
    "        'layer':'loss3/classifier',\n",
    "        'scale':1.2,\n",
    "        'iter_n':150,\n",
    "        'start_sigma':0.78*1.2,\n",
    "        'end_sigma':0.78,\n",
    "        'start_step_size':6.,\n",
    "        'end_step_size':6.\n",
    "    },\n",
    "    {\n",
    "        'layer':'loss2/classifier',\n",
    "        'scale':1.2,\n",
    "        'iter_n':150,\n",
    "        'start_sigma':0.78*1.2,\n",
    "        'end_sigma':0.44,\n",
    "        'start_step_size':6.,\n",
    "        'end_step_size':3.\n",
    "    },\n",
    "    {\n",
    "        'layer':'loss1/classifier',\n",
    "        'iter_n':10,\n",
    "        'start_sigma':0.44,\n",
    "        'end_sigma':0.304,\n",
    "        'start_step_size':3.,\n",
    "        'end_step_size':3.\n",
    "    }\n",
    "]\n",
    "\n",
    "# get original input size of network\n",
    "original_w = net.blobs['data'].width\n",
    "original_h = net.blobs['data'].height\n",
    "# the background color of the initial image\n",
    "background_color = np.float32([200.0, 200.0, 200.0])\n",
    "# generate initial random image\n",
    "gen_image = np.random.normal(background_color, 8, (original_w, original_h, 3))\n",
    "\n",
    "# which imagenet class to visualize\n",
    "imagenet_class = 13\n",
    "\n",
    "# generate class visualization via octavewise gradient ascent\n",
    "gen_image = deepdraw(net, gen_image, octaves, focus=imagenet_class, \n",
    "                 random_crop=True, visualize=False)\n",
    "\n",
    "# save image\n",
    "#img_fn = '_'.join([model_name, \"deepdraw\", str(imagenet_class)+'.png'])\n",
    "#PIL.Image.fromarray(np.uint8(gen_image)).save('./' + img_fn)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "This choice of octave parameters tends to give more coherent images, but has a little bit less detail."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "starting drawing\n",
      "finished step 0 in octave 0\n",
      "finished step 10 in octave 0\n",
      "finished step 20 in octave 0\n",
      "finished step 30 in octave 0\n",
      "finished step 40 in octave 0\n",
      "finished step 50 in octave 0\n",
      "finished step 60 in octave 0\n",
      "finished step 70 in octave 0\n",
      "finished step 80 in octave 0\n",
      "finished step 90 in octave 0\n",
      "finished step 100 in octave 0\n",
      "finished step 110 in octave 0\n",
      "finished step 120 in octave 0\n",
      "finished step 130 in octave 0\n",
      "finished step 140 in octave 0\n",
      "finished step 150 in octave 0\n",
      "finished step 160 in octave 0\n",
      "finished step 170 in octave 0\n",
      "finished step 180 in octave 0\n",
      "octave 0 image:\n"
     ]
    },
    {
     "data": {
      "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCADgAOADASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD0cswF\nMUFzgetWVhDKWBBI9aa6F4GVV+96da6ITi0YSpNMqSOxZ1CkbTg5qa0kYB2OAAOp6UrJsCowYEDB\nz1qUw+XB2+bsamrblsaU9yuXEg7kdsVBIXTAccGriwGT7rYJHUdqd5SqQJXBYdAO9EEkrktdEMtV\nLx4I+UDPPamzyqgByMH3pJrgR+YiodgHaoYkinXemGb0NRGKcryNOVrS4CVpCT27YoIJwccGpWgI\nACg7vSljV48tIAewrZ2TsJ+69NSIIzHaOtP5iwD8xpp3KS+SM9KkKE4bPWpnZmlm9hCwUcn5uwoi\ncSZVgQ2Mj0NNKbPm6mnyMyIAuA3Ss5LTQuM+jEB3NjGCO1WpVaOIZAYEcY6iqjyeWu0Y8w9TSRTy\n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\nWPSs+Vwkmgq4htWR/9k=\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "finished step 0 in octave 1\n",
      "finished step 10 in octave 1\n",
      "finished step 20 in octave 1\n",
      "finished step 30 in octave 1\n",
      "finished step 40 in octave 1\n",
      "finished step 50 in octave 1\n",
      "finished step 60 in octave 1\n",
      "finished step 70 in octave 1\n",
      "finished step 80 in octave 1\n",
      "finished step 90 in octave 1\n",
      "finished step 100 in octave 1\n",
      "finished step 110 in octave 1\n",
      "finished step 120 in octave 1\n",
      "finished step 130 in octave 1\n",
      "finished step 140 in octave 1\n",
      "finished step 150 in octave 1\n",
      "finished step 160 in octave 1\n",
      "finished step 170 in octave 1\n",
      "finished step 180 in octave 1\n",
      "finished step 190 in octave 1\n",
      "finished step 200 in octave 1\n",
      "finished step 210 in octave 1\n",
      "finished step 220 in octave 1\n",
      "finished step 230 in octave 1\n",
      "finished step 240 in octave 1\n",
      "finished step 250 in octave 1\n",
      "finished step 260 in octave 1\n",
      "finished step 270 in octave 1\n",
      "finished step 280 in octave 1\n",
      "finished step 290 in octave 1\n",
      "finished step 300 in octave 1\n",
      "finished step 310 in octave 1\n",
      "finished step 320 in octave 1\n",
      "finished step 330 in octave 1\n",
      "finished step 340 in octave 1\n",
      "finished step 350 in octave 1\n",
      "finished step 360 in octave 1\n",
      "finished step 370 in octave 1\n",
      "finished step 380 in octave 1\n",
      "finished step 390 in octave 1\n",
      "finished step 400 in octave 1\n",
      "finished step 410 in octave 1\n",
      "finished step 420 in octave 1\n",
      "finished step 430 in octave 1\n",
      "finished step 440 in octave 1\n",
      "octave 1 image:\n"
     ]
    },
    {
     "data": {
      "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAENAQ0DASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD0fcaa\nTmpPLZugpCmK6YSVjnlBpkZIxSDP4etSeXu4oMYxjnFErFRuhFBJximsR9aeAGyPXv607Z3xwBWV\nlcpkGMninIO5+tP25PT8aAOtNiSFBprNQ3Bx61HtbP3lINKMSroaxJOBzSAc45qZYTv3hvlxzmlO\nCmcdDitLodyLZgjvTwBnHSmbzux6UEEscCk9S4sduGOKQMTzjik27e1OQs2Tk8VFjRTsOBDDI7da\nVSM1Hgbi2aX5uMYz+tZNGm6J8E/dIPqOhqKT7m7tRuYkEnmnT4aAMck57VrRlZ2Zx1ordEKnj1p5\n4U5NQjA5PFScMUB4BraSMVuJnjNOA+XPaowSWxg/j2p4YAYB59KzZYoIIyDxTuT0FRjI7YHpT2JV\n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\nFNdQGrHltIiU5Skf/9k=\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "octaves = [\n",
    "    {\n",
    "        'layer':'loss3/classifier',\n",
    "        'iter_n':190,\n",
    "        'start_sigma':2.5,\n",
    "        'end_sigma':0.78,\n",
    "        'start_step_size':11.,\n",
    "        'end_step_size':11.\n",
    "    },\n",
    "    {\n",
    "        'layer':'loss3/classifier',\n",
    "        'scale':1.2,\n",
    "        'iter_n':450,\n",
    "        'start_sigma':0.78*1.2,\n",
    "        'end_sigma':0.40,\n",
    "        'start_step_size':6.,\n",
    "        'end_step_size':3.\n",
    "    }\n",
    "]\n",
    "imagenet_class = 244\n",
    "gen_image = np.random.normal(background_color, 8, (original_w, original_h, 3))\n",
    "gen_image = deepdraw(net, gen_image, octaves, focus=imagenet_class, \n",
    "                 random_crop=True, visualize=False)\n",
    "\n",
    "#img_fn = '_'.join([model_name, \"deepdraw\", str(imagenet_class)+'.png'])\n",
    "#PIL.Image.fromarray(np.uint8(gen_image)).save('./' + img_fn)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
